iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0
Software Development

Unity進階——做一個完整的遊戲系列 第 22

Day 22:建立酒館室內場景與背景人物互動

  • 分享至 

  • xImage
  •  

前一天我完成了「目前目標」提示。玩家和村長完成第一次對話後,畫面左上角會顯示下一步目標:前往酒館,詢問受傷的年輕人。

因此 Day 22 的目標,就是開始建立酒館相關內容,讓玩家真的可以進入酒館,並和裡面的受傷年輕人互動。
這一天的重點不是做完整酒館劇情,也不是升級成正式多角色對話系統,而是先完成三件事:
第一,建立酒館室內場景。
第二,讓酒館背景裡的人物可以互動。
第三,設定村莊與酒館之間的進出點位。

一開始要先處理酒館室內背景。原本如果直接使用 Tavern 素材中已經切好的大型室內圖,會遇到一個問題:Day 18 製作村長家時,已經使用過 Tavern_01_2 作為村長家室內原型。如果酒館又繼續使用同一塊素材,村長家和酒館就會看起來像同一間房子,只是換了門牌,這種偷懶太明顯。

所以 Day 22 改成從 Tavern 素材中重新切出兩塊不同的區域:Travern_01_3 和 Travern_01_4,並把它們拼成 TavernInteriorScene 的酒館背景。

https://ithelp.ithome.com.tw/upload/images/20260920/20178373FaeqNlCUAK.png

這樣做的好處是,酒館和村長家在視覺上有明顯區別。村長家偏向大型室內與集會空間,而酒館則使用另一組區域拼接,讓它更像玩家接下來要調查年輕人的場所。

完成背景後,下一步是處理碰撞。酒館背景本質上仍然是圖片,如果不加碰撞,玩家可以直接穿牆、走進櫃台、踩到桌椅上。

Unity 不會因為畫面上看起來有桌子,就突然理解桌子不是地板。它沒有那麼善解人意,謝天謝地,也謝不了地。
因此我建立了 TavernCollision 分組,針對酒館內的牆面、櫃台、桌椅與走廊邊界補上 BoxCollider2D。

https://ithelp.ithome.com.tw/upload/images/20260920/20178373Cx14wzVQA5.png

這些碰撞箱讓酒館從單純的背景圖片,變成可以實際探索的室內場景。
這一步完成後,也要避免再執行會重建 TavernCollision 的工具,因為碰撞箱已經手動調整到合適位置。如果後續工具又重新生成,很可能會把已經調好的碰撞覆蓋掉。

接著處理酒館內的背景人物互動。這次酒館背景本身已經有三個人物:
1 號是吧檯的人,對應 BackgroundCharacter_01_Bar,說話者是酒館老闆。
2 號是柱子旁邊的人,對應 BackgroundCharacter_02_Pillar,說話者是阿森。
3 號是下方走廊的人,對應 BackgroundCharacter_03_LowerHall,說話者是洛克。
這些人物已經畫在背景裡,所以不能刪除,也不應該再額外疊新的 NPC Sprite。否則畫面上就會出現背景人物和新 NPC 重疊的怪現象,像酒館裡每個人都有替身,劇情瞬間變得非常不健康。
因此這裡改用透明互動區的做法。
我建立 TavernBackgroundCharacterInteractions,並在三位背景人物附近各建立一個透明 Trigger。這些互動區不顯示圖片,只使用 BoxCollider2D 判定玩家是否靠近。

https://ithelp.ithome.com.tw/upload/images/20260920/20178373cnNgdeSdtD.png
https://ithelp.ithome.com.tw/upload/images/20260920/201783730PcegBFRks.png

每個互動區都勾選 Is Trigger,並掛上 NpcDialogueInteraction。
這樣玩家靠近背景人物時,就可以觸發簡單對話,而不需要再新增額外的 NPC 圖像。
目前 NpcDialogueInteraction 仍然是簡易對話系統,每個互動區只有一個 speakerName,因此還不能做到主角與 NPC 逐句交替說話。

也就是說,目前酒館對話會先濃縮成各個 NPC 自己的台詞,例如酒館老闆、阿森、洛克各自說明一部分情況。之後如果要讓主角也逐句回應,就需要在 Day 23 或後續天數升級成多 speaker 對話系統。

接下來回到村莊場景,處理酒館外觀。Day 22 期間有先盤點專案裡可用的外觀素材,確認酒館外觀應該使用 Anokolisa 的建築素材,而不是使用 Buildings/MockUps/Tavern_01.png。

Buildings/MockUps/Tavern_01.png 是酒館內裝示意圖,不適合當作村莊外部建築。
村莊中的酒館外觀應該使用:
Assets/ImportedAssets/Anokolisa_TopdownRPG/Buildings/Roofs.png
Assets/ImportedAssets/Anokolisa_TopdownRPG/Buildings/Walls.png
Assets/ImportedAssets/Anokolisa_TopdownRPG/Buildings/Props.png
或已整理好的 Village_BuildingPalette_16x16.prefab

https://ithelp.ithome.com.tw/upload/images/20260920/20178373mLKtkJnW6W.png

酒館外觀建立在 VillageScene 中,作為玩家從村莊進入酒館的入口。
這一步讓村莊中的酒館不再只是預留地,而是有了實際建築。後續玩家看到酒館門口,就能理解這裡是 Day 21 目標提示中提到的下一個調查地點。

酒館外觀完成後,下一步是設定村莊通往酒館的轉場。
在 VillageScene 的酒館入口位置建立 Exit_ToTavern,並設定它成為轉場 Trigger。

https://ithelp.ithome.com.tw/upload/images/20260920/20178373TDTdQNs0B8.png

Exit_ToTavern 需要加上 BoxCollider2D,並勾選 Is Trigger。接著掛上 SceneTransitionPoint,設定:
Target Scene Name = TavernInteriorScene
Target Spawn Point Name = Entry_FromVillage
這代表玩家從村莊走到酒館入口時,會切換到 TavernInteriorScene,並出現在酒館內部的 Entry_FromVillage 位置。

接著進入 TavernInteriorScene,建立酒館內部的進入點。
這一步會建立 TavernMarkers,並在下面放置 Entry_FromVillage。

https://ithelp.ithome.com.tw/upload/images/20260920/20178373lTSlHg5NnG.png

Entry_FromVillage 是玩家從村莊進入酒館後出現的位置。
如果沒有這個點,玩家可能會出現在場景原點,甚至卡在牆裡或桌子上。Unity 對玩家出生位置沒有判斷,所以這件事只能靠我們自己處理。

把 Entry_FromVillage 放在酒館入口附近,可以讓玩家一進入酒館就站在合理的位置,也方便接下來靠近酒館老闆或受傷年輕人,最後建立酒館離開點 Exit_ToVillage,這個點放在酒館出口附近,讓玩家可以從酒館回到村莊。

https://ithelp.ithome.com.tw/upload/images/20260920/20178373S1MzYoJNXg.png

Exit_ToVillage 需要加上 BoxCollider2D,並勾選 Is Trigger。
同時掛上 SceneTransitionPoint,設定:
Target Scene Name = VillageScene
Target Spawn Point Name = Entry_FromTavern
這樣玩家走到酒館出口時,場景會切回 VillageScene,並讓玩家出現在村莊中的 Entry_FromTavern,也就是酒館門外的位置。完成以上設定後,Day 22 不需要再新增截圖。

轉場測試屬於動態效果,用靜態圖片很難表達,因此用文字補充即可。
進入 Play Mode 後,玩家可以從村莊酒館入口切換到 TavernInteriorScene,進入後會出現在 Entry_FromVillage。走到酒館出口的 Exit_ToVillage 後,場景會切回 VillageScene,並出現在 Entry_FromTavern。

同時,玩家靠近酒館內三位背景人物時,也能觸發對話。
Day 22 完成後,酒館已經具備基本功能:
有獨立室內背景、有碰撞箱、有背景人物互動區、有村莊外觀、有村莊進入酒館的轉場,也有酒館回村莊的出口。
下一步 Day 23 可以繼續處理酒館對話。由於目前簡易對話系統只能顯示單一說話者,所以如果要讓主角、酒館老闆、阿森、米娜、洛克之間有更自然的來回對話,就需要把對話系統升級成支援多 speaker 的版本。


上一篇
Day 21:與村長對話後顯示目前目標
下一篇
Day 23:升級多說話者對話與主角基礎動作
系列文
Unity進階——做一個完整的遊戲25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言